枚举 您所在的位置:网站首页 typescript enum 枚举

枚举

2023-03-20 11:40| 来源: 网络整理| 查看: 265

关注公众号 关注公众号与我交流 与我交流购买此书 购买此书 # 枚举

枚举是组织收集有关联变量的一种方式,许多程序语言(如:c/c#/Java)都有枚举数据类型。下面是定义一个 TypeScript 枚举类型的方式:

enum CardSuit { Clubs, Diamonds, Hearts, Spades } // 简单的使用枚举类型 let Card = CardSuit.Clubs; // 类型安全 Card = 'not a member of card suit'; // Error: string 不能赋值给 `CardSuit` 类型

这些枚举类型的值都是数字类型,因此它们被称为数字类型枚举。

# 数字类型枚举与数字类型

数字类型枚举,允许我们将数字类型或者其他任何与数字类型兼容的类型赋值给枚举类型的实例。

enum Color { Red, Green, Blue } let col = Color.Red; col = 0; // 有效的,这也是 Color.Red # 数字类型枚举与字符串类型

在我们继续深入学习枚举类型之前,先来看看它编译的 JavaScript 吧,以下是一个简单的 TypeScript 枚举类型:

enum Tristate { False, True, Unknown }

其被编译成 JavaScript 后如下所示:

 

var Tristate; (function(Tristate) { Tristate[(Tristate['False'] = 0)] = 'False'; Tristate[(Tristate['True'] = 1)] = 'True'; Tristate[(Tristate['Unknown'] = 2)] = 'Unknown'; })(Tristate || (Tristate = {}));

先让我们聚焦 Tristate[Tristate['False'] = 0] = 'False' 这行代码,其中 Tristate['False'] = 0 的意思是将 Tristate 对象里的 False 成员值设置为 0。注意,JavaScript 赋值运算符返回的值是被赋予的值(在此例子中是 0),因此下一次 JavaScript 运行时执行的代码是 Tristate[0] = 'False'。意味着你可以使用 Tristate 变量来把字符串枚举类型改造成一个数字或者是数字类型的枚举类型,如下所示:

enum Tristate { False, True, Unknown } console.log(Tristate[0]); // 'False' console.log(Tristate['False']); // 0 console.log(Tristate[Tristate.False]); // 'False' because `Tristate.False == 0` # 改变与数字枚举关联的数字

默认情况下,第一个枚举值是 0,然后每个后续值依次递增 1:

enum Color { Red, // 0 Green, // 1 Blue // 2 }

但是,你可以通过特定的赋值来改变给任何枚举成员关联的数字,如下例子,我们从 3 开始依次递增:

enum Color { DarkRed = 3, // 3 DarkGreen, // 4 DarkBlue // 5 }

TIP

我通常用 = 1 初始化,因为在枚举类型值里,它能让你做一个安全可靠的检查。

# 使用数字类型作为标志

枚举的一个很好用途是使用枚举作为标志。这些标志允许你检查一组条件中的某个条件是否为真。考虑如下代码例子,我们有一组关于 animals 的属性:

enum AnimalFlags { None = 0, HasClaws = 1


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有